/**
 * @file
 *
 * Header del modulo per la gestione delle parti comuni.
 *
 * In questo file vengono gestite le parti comuni a tutto il programma come:
 * * percorsi delle risorse esterne utilizzate dal programma
 * * definizioni di compilazione per ambiente unix/windows
 * * definizioni delle dimensioni grafiche
 * * gestione della visualizzazione di finestre di stato (dialogs)
 */

// Author: Adrian Sassatelli
// Copyright (c) 2014 Adrian Sassatelli


#include <gtk/gtk.h>


/* -------------------------------------------------------------------------- */
/*    PERCORSI RISORSE                                                        */
/* -------------------------------------------------------------------------- */

/** Definizione del nome del file per l'interfaccia grafica */
//#define MAIN_GLADE_FILE "src/minesweeperclone.glade"
#define MAIN_GLADE_FILE "minesweeperclone.glade"


/* -------------------------------------------------------------------------- */
/*    DEFINIZIONI FILE INI                                                    */
/* -------------------------------------------------------------------------- */

/** Definizione del nome del file per la gestione dei records */
#define RECORDS_INI_FILE "records.ini"

/** Definizione della chiave per l'IO del campo del nome */
#define INI_KEY_NAME "name"

/** Definizione della chiave per l'IO del campo dei secondi */
#define INI_KEY_SECONDS "seconds"


/* -------------------------------------------------------------------------- */
/*    DEFINIZIONI VARIE GRAFICHE                                              */
/* -------------------------------------------------------------------------- */

/** Definizione della dimensione delle singole caselle sulla griglia */
#define IMG_BUTTON_DIM 20

/** Definizione della dimensione dell'immagine dello stato della partita corrente */
#define IMG_STATUS_DIM 28

/** Definizione del tempo massimo visualizzato di ogni partita (59m.59s = 3599) */
#define MAX_COUNTED_TIME 3599


/* -------------------------------------------------------------------------- */
/*    DEFINIZIONI COMPILAZIONE                                                */
/* -------------------------------------------------------------------------- */

/**
 * Definizioni per la compilazione in ambienti Win e Linux.
 *
 * Per la compilazione in ambiente WIN32 non basta dichiarare le funzioni che
 * gestiscono gli eventi nella modalità classica <em>extern "C"</em>, ma
 * bisogna aggiungere <em>__declspec(dllexport)</em> e quindi si è creata la
 * definizione ::MODULE_EXPORT che, in base all'ambiente di compilazione,
 * sistema il modo di dichiarare le funzioni.
 */
#ifdef WIN32
    #define MODULE_EXPORT extern "C" __declspec(dllexport)
#else
    #define MODULE_EXPORT extern "C"
#endif


/* -------------------------------------------------------------------------- */
/*    FUNZIONI                                                                */
/* -------------------------------------------------------------------------- */

/**
 * Visualizza finestra di errore.
 *
 * @param[in] amessage Messaggio da visualizzare
 */
void error_dialog (const gchar *amessage);

/* -------------------------------------------------------------------------- */
